package com.example.boot_6.map;

import java.util.*;
import java.util.stream.IntStream;

public class Map_2 {
    public static void main(String[] args) {
        HashMap<Object, Object> map = new HashMap<>();
        map.put("k1", "v");
        map.put("k2", "v");
        map.put("k3", "v");
        map.put("k4", "v2");
        map.put("k5", "v3");
        map.put("k6", "v3");
        map.put(null,null);
        map.put(null,null);
        HashMap<Object, Object> map1 = new HashMap<>();
        //存放重复的value值
        List<Object> list = new ArrayList<>();
        //存放去重后的key值
        List<Object> listkey = new ArrayList<>();
        //置换map中的k,v 值
        map.forEach((k, v) -> {
            if (!map1.containsKey(v)) {
                map1.put(v, k);
            } else {
                list.add(v);
                listkey.add(k);
            }
        });
        //输出重复的value值的集合及总数
        System.out.println("重复的value值的集合: " + list + "\n" + "重复总数:" + list.size());
        System.out.println("重复的key键集合:" + listkey);
        //准备去重 重构新的map
        IntStream.range(0, listkey.size()).forEach(i -> {
            map.remove(listkey.get(i));
        });
        System.out.println("去重后的map集合:" + map);


        //list去重
        List<Integer> list1 = new LinkedList<>();
        list1.add(1);
        list1.add(1);
        list1.add(1);
        list1.add(1);
        list1.add(1, 12);
        Set<Integer> set = new HashSet<>();
        list1.stream().forEach(i -> set.add(i));
        //负数由小到大
        //正书由大到小
        Collections.sort(list1,(a,b) -> b.compareTo(a));
        System.out.println(list1);
        list1.clear();
        list1.addAll(set);
        System.out.println(list1);

    }
}
